﻿using GC_FFW.BusinessEntities.Abstractions.Interfaces.Forecast;
using GC_FFW.BusinessEntities.Forecast;
using GC_FFW.ForecastWriter.Abstractions.Interfaces.Builders;
using GC_FFW.ForecastWriter.Enums;
using System.Collections.Generic;

namespace GC_FFW.ForecastWriter.Builders
{
	public class ForecastStructureBuilder : IForecastStructureBuilder
	{
		#region IForecastStructureBuilder Members

		public IForecastStructure<TeamMatchProposalType> GenerateTeamMatchForecastStructure()
		{
			return new ForecastStructure<TeamMatchProposalType>
			{
				Paragraphs = new List<IParagraph<TeamMatchProposalType>>
				{
					new Paragraph<TeamMatchProposalType>
					{
						Order = 1,
						Proposals = new List<IProposal<TeamMatchProposalType>>
						{
							new Proposal<TeamMatchProposalType> { Order = 1, Type = TeamMatchProposalType.IntroductionWelcome },
							new Proposal<TeamMatchProposalType> { Order = 2, Type = TeamMatchProposalType.IntroductionBettingOptions },
							new Proposal<TeamMatchProposalType> { Order = 3, Type = TeamMatchProposalType.IntroductionAboutMatch }
						}
					},
					new Paragraph<TeamMatchProposalType>
					{
						Order = 2,
						Proposals = new List<IProposal<TeamMatchProposalType>>
						{
							new Proposal<TeamMatchProposalType> { Order = 1, Type = TeamMatchProposalType.ConfrontationsStatisticsMatchesCount },
							new Proposal<TeamMatchProposalType> { Order = 2, Type = TeamMatchProposalType.ConfrontationsStatisticsAboutWinner },
							new Proposal<TeamMatchProposalType> { Order = 3, Type = TeamMatchProposalType.ConfrontationsStatisticsAboutMatches },
							new Proposal<TeamMatchProposalType> { Order = 4, Type = TeamMatchProposalType.ConfrontationsStatisticsAboutWinnerResults },
						}
					},
					new Paragraph<TeamMatchProposalType>
					{
						Order = 3,
						Proposals = new List<IProposal<TeamMatchProposalType>>
						{
							new Proposal<TeamMatchProposalType> { Order = 1, Type = TeamMatchProposalType.LastTeamMatchLastMatchDate },
							new Proposal<TeamMatchProposalType> { Order = 2, Type = TeamMatchProposalType.LastTeamMatchGoalsCount },
							new Proposal<TeamMatchProposalType> { Order = 3, Type = TeamMatchProposalType.LastTeamMatchFirstGoal },
							new Proposal<TeamMatchProposalType> { Order = 4, Type = TeamMatchProposalType.LastTeamMatchSecondGoal },
							new Proposal<TeamMatchProposalType> { Order = 5, Type = TeamMatchProposalType.LastTeamMatchThirdGoal },
							new Proposal<TeamMatchProposalType> { Order = 6, Type = TeamMatchProposalType.LastTeamMatchFourthGoal },
							new Proposal<TeamMatchProposalType> { Order = 7, Type = TeamMatchProposalType.LastTeamMatchConclusion },
						}
					},
					new Paragraph<TeamMatchProposalType>
					{
						Order = 4,
						Proposals = new List<IProposal<TeamMatchProposalType>>
						{
							new Proposal<TeamMatchProposalType> { Order = 1, Type = TeamMatchProposalType.LastMatchesIntroduction },
							new Proposal<TeamMatchProposalType> { Order = 2, Type = TeamMatchProposalType.LastMatchesTeamResults },
							new Proposal<TeamMatchProposalType> { Order = 3, Type = TeamMatchProposalType.LastMatchesHomeTeamResults },
							new Proposal<TeamMatchProposalType> { Order = 4, Type = TeamMatchProposalType.LastMatchesAwayTeamResults },
						}
					},
					new Paragraph<TeamMatchProposalType>
					{
						Order = 5,
						Proposals = new List<IProposal<TeamMatchProposalType>>
						{
							new Proposal<TeamMatchProposalType> { Order = 1, Type = TeamMatchProposalType.HomeTeamLastResultsFirstMatch },
							new Proposal<TeamMatchProposalType> { Order = 2, Type = TeamMatchProposalType.HomeTeamLastResultsSecondMatch },
							new Proposal<TeamMatchProposalType> { Order = 3, Type = TeamMatchProposalType.HomeTeamLastResultsThirdMatch },
							new Proposal<TeamMatchProposalType> { Order = 4, Type = TeamMatchProposalType.HomeTeamLastResultsFourthMatch },
							new Proposal<TeamMatchProposalType> { Order = 5, Type = TeamMatchProposalType.HomeTeamLastResultsFifthMatch },
						}
					},
					new Paragraph<TeamMatchProposalType>
					{
						Order = 6,
						Proposals = new List<IProposal<TeamMatchProposalType>>
						{
							new Proposal<TeamMatchProposalType> { Order = 1, Type = TeamMatchProposalType.AwayTeamLastResultsFirstMatch },
							new Proposal<TeamMatchProposalType> { Order = 2, Type = TeamMatchProposalType.AwayTeamLastResultsSecondMatch },
							new Proposal<TeamMatchProposalType> { Order = 3, Type = TeamMatchProposalType.AwayTeamLastResultsThirdMatch },
							new Proposal<TeamMatchProposalType> { Order = 4, Type = TeamMatchProposalType.AwayTeamLastResultsFourthMatch },
							new Proposal<TeamMatchProposalType> { Order = 5, Type = TeamMatchProposalType.AwayTeamLastResultsFifthMatch },
						}
					},
					new Paragraph<TeamMatchProposalType>
					{
						Order = 7,
						Proposals = new List<IProposal<TeamMatchProposalType>>
						{
							new Proposal<TeamMatchProposalType> { Order = 1, Type = TeamMatchProposalType.PrognosisTeamWinner },
							new Proposal<TeamMatchProposalType> { Order = 2, Type = TeamMatchProposalType.PrognosisWinCoefficient },
							new Proposal<TeamMatchProposalType> { Order = 3, Type = TeamMatchProposalType.PrognosisWinHandicapCoefficient },
							new Proposal<TeamMatchProposalType> { Order = 4, Type = TeamMatchProposalType.PrognosisEventOfBothToScore },
							new Proposal<TeamMatchProposalType> { Order = 5, Type = TeamMatchProposalType.PrognosisGoalsCount },
							new Proposal<TeamMatchProposalType> { Order = 6, Type = TeamMatchProposalType.PrognosisConclusion },
						}
					}
				}
			};
		}

		#endregion
	}
}
